package com.wzgl.core.controller;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

import com.alibaba.fastjson.JSONObject;
import com.jfinal.aop.Before;
import com.jfinal.aop.Duang;
import com.jfinal.core.Controller;
import com.jfinal.kit.PathKit;
import com.jfinal.kit.PropKit;
import com.jfinal.upload.UploadFile;
import com.qcloud.cos.request.UploadFileRequest;
import com.wzgl.core.config.plugin.COSClientPlugin;
import com.wzgl.core.interceptor.InterUtils;
import com.wzgl.core.interceptor.UCodeInterceptor;
import com.wzgl.core.model.Tusers;
import com.wzgl.core.server.GirdService;
import com.wzgl.core.utils.UuidUtil;
import com.wzgl.core.utils.WebUtils;

/** 
 * @author mxk
 * @version 2016年1月29日 下午9:53:51
 */
public class UploadController extends Controller{
	GirdService gs = Duang.duang(GirdService.class);
	/***
	 * 删除图片
	 */
	public void imageDel(){
		JSONObject json = new JSONObject();
		Map<String,String> map =new HashMap<String,String>();
		String fid = getPara("fid");
		map.put("fid", fid);
		map.put("fdel", "1");
		json.put("error", 0);
		try {
			gs.delImg(map);
		} catch (Exception e) {
			json.put("error", 1);
		}
		renderJson(json.toJSONString());
	}
	/***
	 * 保存图片 上传至腾讯对象云存储
	 */
	public void imageUpload() {
		Map<String,String> map =new HashMap<String,String>();
		UploadFile uf = getFile();
		String fileName = uf.getFileName(); // 去掉路径
//		String fuser_id = getPara("fuser_id");
		Tusers user =  WebUtils.currentUser(this);
		File source = uf.getFile();; // 获取临时文件对象
		String extension = fileName.substring(fileName.lastIndexOf("."));
		String savePath = PathKit.getWebRootPath() + "/upload";
		JSONObject json = new JSONObject();
		String fid = UuidUtil.get32UUID();
		
		
		String path = "";
		if (".png".equals(extension) || ".jpg".equals(extension)
				|| ".gif".equals(extension) || "jpeg".equals(extension)
				|| "bmp".equals(extension)) {
			fileName = fid + extension;
			try {
				//服务保存
//				FileInputStream fis = new FileInputStream(source);
//				File targetDir = new File(savePath);
//				if (!targetDir.exists()) {
//					targetDir.mkdirs();
//				}
//				File target = new File(targetDir, fileName);
//				if (!target.exists()) {
//					target.createNewFile();
//				}
//				FileOutputStream fos = new FileOutputStream(target);
//				byte[] bts = new byte[1024 * 20];
//				while (fis.read(bts, 0, 1024 * 20) != -1) {
//					fos.write(bts, 0, 1024 * 20);
//				}
//				fos.close();
//				fis.close();
//				path = "upload" + "/" + fileName);
				//服务保存
				
				//----------------保存到云存储----------------------
				UploadFileRequest ur = new UploadFileRequest(PropKit.get("bucket"),"/"+fileName, source.toString());
				String mes = COSClientPlugin.cosClient(ur);
				System.out.println(mes);
				JSONObject comMsg = JSONObject.parseObject(mes);
				//解析云存储返回信息
				int code = comMsg.getIntValue("code");
				//返回数据
				String obj = comMsg.getString("data");
				if(code == 0){
					JSONObject data = JSONObject.parseObject(obj);
					path = data.getString("source_url");
				}else{
					json.put("error", code);
					json.put("message", "图片保存云存储错误,请稍后再试");
				}
				//------------------保存到云存储-------------------------
				
				source.delete();
				json.put("error", 0);
				json.put("src", path); // 相对地址，显示图片用
				json.put("fid", fid);
				map.put("fid", fid);
				map.put("path",  path);
				map.put("fuser_id",  user.getFid());
				try {
					boolean b = gs.saveImg(map);
				} catch (Exception e) {
					json.put("error", 1);
					json.put("message", "保存文件信息错误,请稍后再传");
				}
			} catch (Exception e) {
				json.put("error", 1);
				json.put("message", "上传出现错误，请稍后再上传");
			} 
		} else {
			source.delete();
			json.put("error", 1);
			json.put("message", "只允许上传png,jpg,jpeg,gif,bmp类型的图片文件");
		}

		renderJson(json.toJSONString());
	}
}
